Software tools have been implemented for the purpose of automated monitoring of user or system initiated events that take place in a computing environment. Such automated monitoring can help introduce efficiencies into the computing environment by relieving a human operator from having to constantly monitor and look for certain events. For example, it may be desirable to monitor changes to the status of a graphical user interface (GUI) window appearing on a user screen to determine and track the software applications that are being actively utilized by a user. The monitoring can, for example, provide details related to the amount of time certain applications are utilized and help an administrator better understand the needs of the users.
To monitor events, most tools rely on information provided by the local operating system or the application programming interface (API) running locally on the user computer, where the GUI objects are rendered. In remotely serviced GUI environments (e.g., web-based consoles), the GUI data is rendered on a remote server and then delivered as a bitmap to a user terminal. In these cases, the local operating system is not aware of the object-based GUI data (e.g., placement data for an object on the screen). Therefore, other methods such as recording the entire GUI environment may be necessary to determine the changes in the GUI environment on the user's computer screen.